using System;
using System.Collections.Generic;
using SinBiota.Model.Entities;

namespace SinBiota.Model.Business.PersistenceServices.Interfaces
{
    public interface ITaxonPersistenceServices
    {
        Taxon FindById(int id);
        IList<Taxon> FindByNameAndRank(string name, string taxonomicRank);
        IList<Taxon> FindAncestors(Taxon taxon);
        IList<Taxon> FindAllRootNodes();
        IList<Taxon> FindChildren(Taxon taxon);
        IList<Taxon> FindByNameStartswith(string term);
        IList<Taxon> FindByNameStartswithAndRank(string term, string rank);
        IList<Taxon> FindByNameLike(string term);
        void Save(Taxon taxon);
        void SaveTaxonReference(TaxonReference taxonReference);
        TaxonReference FindReferenceByExactNameOrCreate(string reference);
    }
}